// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 G3D.g 2009-08-27 17:15:29


using System;
using Antlr.Runtime;
using IList 		= System.Collections.IList;
using ArrayList 	= System.Collections.ArrayList;
using Stack 		= Antlr.Runtime.Collections.StackList;


namespace 
	GeometryViz3D.Model

{
public class G3DLexer : Lexer {
    public const int O = 14;
    public const int OctalLiteral = 10;
    public const int Digit = 47;
    public const int HexDigit = 40;
    public const int T__51 = 51;
    public const int P = 13;
    public const int V = 20;
    public const int I = 15;
    public const int F = 27;
    public const int U = 35;
    public const int VECTOR = 23;
    public const int S = 34;
    public const int D = 26;
    public const int Letter = 46;
    public const int R = 22;
    public const int T__52 = 52;
    public const int K = 31;
    public const int EscapeSequence = 43;
    public const int B = 25;
    public const int Q = 33;
    public const int M = 32;
    public const int LINE = 6;
    public const int T = 17;
    public const int FloatingPointLiteral = 12;
    public const int FloatTypeSuffix = 42;
    public const int ID = 5;
    public const int IntegerTypeSuffix = 41;
    public const int W = 36;
    public const int H = 29;
    public const int POINT = 4;
    public const int WS = 48;
    public const int CharacterLiteral = 7;
    public const int G = 28;
    public const int COMMENT = 49;
    public const int StringLiteral = 8;
    public const int A = 24;
    public const int LINE_COMMENT = 50;
    public const int N = 16;
    public const int X = 37;
    public const int Z = 39;
    public const int UnicodeEscape = 44;
    public const int HexLiteral = 9;
    public const int C = 21;
    public const int EOF = -1;
    public const int L = 18;
    public const int T__53 = 53;
    public const int DecimalLiteral = 11;
    public const int OctalEscape = 45;
    public const int Y = 38;
    public const int J = 30;
    public const int E = 19;

    // delegates
    // delegators

    public G3DLexer() 
    {
		InitializeCyclicDFAs();
    }
    public G3DLexer(ICharStream input)
		: this(input, null) {
    }
    public G3DLexer(ICharStream input, RecognizerSharedState state)
		: base(input, state) {
		InitializeCyclicDFAs(); 

    }
    
    override public string GrammarFileName
    {
    	get { return "G3D.g";} 
    }

    // $ANTLR start "T__51"
    public void mT__51() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__51;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:11:7: ( '=' )
            // G3D.g:11:9: '='
            {
            	Match('='); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__51"

    // $ANTLR start "T__52"
    public void mT__52() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__52;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:12:7: ( '+' )
            // G3D.g:12:9: '+'
            {
            	Match('+'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__52"

    // $ANTLR start "T__53"
    public void mT__53() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__53;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:13:7: ( '-' )
            // G3D.g:13:9: '-'
            {
            	Match('-'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__53"

    // $ANTLR start "POINT"
    public void mPOINT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = POINT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:74:2: ( P O I N T )
            // G3D.g:74:4: P O I N T
            {
            	mP(); 
            	mO(); 
            	mI(); 
            	mN(); 
            	mT(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "POINT"

    // $ANTLR start "LINE"
    public void mLINE() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = LINE;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:78:2: ( L I N E )
            // G3D.g:78:4: L I N E
            {
            	mL(); 
            	mI(); 
            	mN(); 
            	mE(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "LINE"

    // $ANTLR start "VECTOR"
    public void mVECTOR() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = VECTOR;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:82:2: ( V E C T O R )
            // G3D.g:82:4: V E C T O R
            {
            	mV(); 
            	mE(); 
            	mC(); 
            	mT(); 
            	mO(); 
            	mR(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "VECTOR"

    // $ANTLR start "A"
    public void mA() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:85:11: ( ( 'a' | 'A' ) )
            // G3D.g:85:12: ( 'a' | 'A' )
            {
            	if ( input.LA(1) == 'A' || input.LA(1) == 'a' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "A"

    // $ANTLR start "B"
    public void mB() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:86:11: ( ( 'b' | 'B' ) )
            // G3D.g:86:12: ( 'b' | 'B' )
            {
            	if ( input.LA(1) == 'B' || input.LA(1) == 'b' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "B"

    // $ANTLR start "C"
    public void mC() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:87:11: ( ( 'c' | 'C' ) )
            // G3D.g:87:12: ( 'c' | 'C' )
            {
            	if ( input.LA(1) == 'C' || input.LA(1) == 'c' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "C"

    // $ANTLR start "D"
    public void mD() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:88:11: ( ( 'd' | 'D' ) )
            // G3D.g:88:12: ( 'd' | 'D' )
            {
            	if ( input.LA(1) == 'D' || input.LA(1) == 'd' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "D"

    // $ANTLR start "E"
    public void mE() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:89:11: ( ( 'e' | 'E' ) )
            // G3D.g:89:12: ( 'e' | 'E' )
            {
            	if ( input.LA(1) == 'E' || input.LA(1) == 'e' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "E"

    // $ANTLR start "F"
    public void mF() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:90:11: ( ( 'f' | 'F' ) )
            // G3D.g:90:12: ( 'f' | 'F' )
            {
            	if ( input.LA(1) == 'F' || input.LA(1) == 'f' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "F"

    // $ANTLR start "G"
    public void mG() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:91:11: ( ( 'g' | 'G' ) )
            // G3D.g:91:12: ( 'g' | 'G' )
            {
            	if ( input.LA(1) == 'G' || input.LA(1) == 'g' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "G"

    // $ANTLR start "H"
    public void mH() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:92:11: ( ( 'h' | 'H' ) )
            // G3D.g:92:12: ( 'h' | 'H' )
            {
            	if ( input.LA(1) == 'H' || input.LA(1) == 'h' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "H"

    // $ANTLR start "I"
    public void mI() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:93:11: ( ( 'i' | 'I' ) )
            // G3D.g:93:12: ( 'i' | 'I' )
            {
            	if ( input.LA(1) == 'I' || input.LA(1) == 'i' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "I"

    // $ANTLR start "J"
    public void mJ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:94:11: ( ( 'j' | 'J' ) )
            // G3D.g:94:12: ( 'j' | 'J' )
            {
            	if ( input.LA(1) == 'J' || input.LA(1) == 'j' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "J"

    // $ANTLR start "K"
    public void mK() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:95:11: ( ( 'k' | 'K' ) )
            // G3D.g:95:12: ( 'k' | 'K' )
            {
            	if ( input.LA(1) == 'K' || input.LA(1) == 'k' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "K"

    // $ANTLR start "L"
    public void mL() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:96:11: ( ( 'l' | 'L' ) )
            // G3D.g:96:12: ( 'l' | 'L' )
            {
            	if ( input.LA(1) == 'L' || input.LA(1) == 'l' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "L"

    // $ANTLR start "M"
    public void mM() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:97:11: ( ( 'm' | 'M' ) )
            // G3D.g:97:12: ( 'm' | 'M' )
            {
            	if ( input.LA(1) == 'M' || input.LA(1) == 'm' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "M"

    // $ANTLR start "N"
    public void mN() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:98:11: ( ( 'n' | 'N' ) )
            // G3D.g:98:12: ( 'n' | 'N' )
            {
            	if ( input.LA(1) == 'N' || input.LA(1) == 'n' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "N"

    // $ANTLR start "O"
    public void mO() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:99:11: ( ( 'o' | 'O' ) )
            // G3D.g:99:12: ( 'o' | 'O' )
            {
            	if ( input.LA(1) == 'O' || input.LA(1) == 'o' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "O"

    // $ANTLR start "P"
    public void mP() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:100:11: ( ( 'p' | 'P' ) )
            // G3D.g:100:12: ( 'p' | 'P' )
            {
            	if ( input.LA(1) == 'P' || input.LA(1) == 'p' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "P"

    // $ANTLR start "Q"
    public void mQ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:101:11: ( ( 'q' | 'Q' ) )
            // G3D.g:101:12: ( 'q' | 'Q' )
            {
            	if ( input.LA(1) == 'Q' || input.LA(1) == 'q' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Q"

    // $ANTLR start "R"
    public void mR() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:102:11: ( ( 'r' | 'R' ) )
            // G3D.g:102:12: ( 'r' | 'R' )
            {
            	if ( input.LA(1) == 'R' || input.LA(1) == 'r' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "R"

    // $ANTLR start "S"
    public void mS() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:103:11: ( ( 's' | 'S' ) )
            // G3D.g:103:12: ( 's' | 'S' )
            {
            	if ( input.LA(1) == 'S' || input.LA(1) == 's' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "S"

    // $ANTLR start "T"
    public void mT() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:104:11: ( ( 't' | 'T' ) )
            // G3D.g:104:12: ( 't' | 'T' )
            {
            	if ( input.LA(1) == 'T' || input.LA(1) == 't' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "T"

    // $ANTLR start "U"
    public void mU() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:105:11: ( ( 'u' | 'U' ) )
            // G3D.g:105:12: ( 'u' | 'U' )
            {
            	if ( input.LA(1) == 'U' || input.LA(1) == 'u' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "U"

    // $ANTLR start "V"
    public void mV() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:106:11: ( ( 'v' | 'V' ) )
            // G3D.g:106:12: ( 'v' | 'V' )
            {
            	if ( input.LA(1) == 'V' || input.LA(1) == 'v' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "V"

    // $ANTLR start "W"
    public void mW() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:107:11: ( ( 'w' | 'W' ) )
            // G3D.g:107:12: ( 'w' | 'W' )
            {
            	if ( input.LA(1) == 'W' || input.LA(1) == 'w' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "W"

    // $ANTLR start "X"
    public void mX() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:108:11: ( ( 'x' | 'X' ) )
            // G3D.g:108:12: ( 'x' | 'X' )
            {
            	if ( input.LA(1) == 'X' || input.LA(1) == 'x' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "X"

    // $ANTLR start "Y"
    public void mY() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:109:11: ( ( 'y' | 'Y' ) )
            // G3D.g:109:12: ( 'y' | 'Y' )
            {
            	if ( input.LA(1) == 'Y' || input.LA(1) == 'y' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Y"

    // $ANTLR start "Z"
    public void mZ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:110:11: ( ( 'z' | 'Z' ) )
            // G3D.g:110:12: ( 'z' | 'Z' )
            {
            	if ( input.LA(1) == 'Z' || input.LA(1) == 'z' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Z"

    // $ANTLR start "HexLiteral"
    public void mHexLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = HexLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:112:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
            // G3D.g:112:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
            {
            	Match('0'); 
            	if ( input.LA(1) == 'X' || input.LA(1) == 'x' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}

            	// G3D.g:112:28: ( HexDigit )+
            	int cnt1 = 0;
            	do 
            	{
            	    int alt1 = 2;
            	    int LA1_0 = input.LA(1);

            	    if ( ((LA1_0 >= '0' && LA1_0 <= '9') || (LA1_0 >= 'A' && LA1_0 <= 'F') || (LA1_0 >= 'a' && LA1_0 <= 'f')) )
            	    {
            	        alt1 = 1;
            	    }


            	    switch (alt1) 
            		{
            			case 1 :
            			    // G3D.g:112:28: HexDigit
            			    {
            			    	mHexDigit(); 

            			    }
            			    break;

            			default:
            			    if ( cnt1 >= 1 ) goto loop1;
            		            EarlyExitException eee1 =
            		                new EarlyExitException(1, input);
            		            throw eee1;
            	    }
            	    cnt1++;
            	} while (true);

            	loop1:
            		;	// Stops C# compiler whining that label 'loop1' has no statements

            	// G3D.g:112:38: ( IntegerTypeSuffix )?
            	int alt2 = 2;
            	int LA2_0 = input.LA(1);

            	if ( (LA2_0 == 'L' || LA2_0 == 'l') )
            	{
            	    alt2 = 1;
            	}
            	switch (alt2) 
            	{
            	    case 1 :
            	        // G3D.g:112:38: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "HexLiteral"

    // $ANTLR start "DecimalLiteral"
    public void mDecimalLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = DecimalLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:114:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
            // G3D.g:114:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
            {
            	// G3D.g:114:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
            	int alt4 = 2;
            	int LA4_0 = input.LA(1);

            	if ( (LA4_0 == '0') )
            	{
            	    alt4 = 1;
            	}
            	else if ( ((LA4_0 >= '1' && LA4_0 <= '9')) )
            	{
            	    alt4 = 2;
            	}
            	else 
            	{
            	    NoViableAltException nvae_d4s0 =
            	        new NoViableAltException("", 4, 0, input);

            	    throw nvae_d4s0;
            	}
            	switch (alt4) 
            	{
            	    case 1 :
            	        // G3D.g:114:19: '0'
            	        {
            	        	Match('0'); 

            	        }
            	        break;
            	    case 2 :
            	        // G3D.g:114:25: '1' .. '9' ( '0' .. '9' )*
            	        {
            	        	MatchRange('1','9'); 
            	        	// G3D.g:114:34: ( '0' .. '9' )*
            	        	do 
            	        	{
            	        	    int alt3 = 2;
            	        	    int LA3_0 = input.LA(1);

            	        	    if ( ((LA3_0 >= '0' && LA3_0 <= '9')) )
            	        	    {
            	        	        alt3 = 1;
            	        	    }


            	        	    switch (alt3) 
            	        		{
            	        			case 1 :
            	        			    // G3D.g:114:34: '0' .. '9'
            	        			    {
            	        			    	MatchRange('0','9'); 

            	        			    }
            	        			    break;

            	        			default:
            	        			    goto loop3;
            	        	    }
            	        	} while (true);

            	        	loop3:
            	        		;	// Stops C# compiler whining that label 'loop3' has no statements


            	        }
            	        break;

            	}

            	// G3D.g:114:45: ( IntegerTypeSuffix )?
            	int alt5 = 2;
            	int LA5_0 = input.LA(1);

            	if ( (LA5_0 == 'L' || LA5_0 == 'l') )
            	{
            	    alt5 = 1;
            	}
            	switch (alt5) 
            	{
            	    case 1 :
            	        // G3D.g:114:45: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "DecimalLiteral"

    // $ANTLR start "OctalLiteral"
    public void mOctalLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = OctalLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:116:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
            // G3D.g:116:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
            {
            	Match('0'); 
            	// G3D.g:116:20: ( '0' .. '7' )+
            	int cnt6 = 0;
            	do 
            	{
            	    int alt6 = 2;
            	    int LA6_0 = input.LA(1);

            	    if ( ((LA6_0 >= '0' && LA6_0 <= '7')) )
            	    {
            	        alt6 = 1;
            	    }


            	    switch (alt6) 
            		{
            			case 1 :
            			    // G3D.g:116:21: '0' .. '7'
            			    {
            			    	MatchRange('0','7'); 

            			    }
            			    break;

            			default:
            			    if ( cnt6 >= 1 ) goto loop6;
            		            EarlyExitException eee6 =
            		                new EarlyExitException(6, input);
            		            throw eee6;
            	    }
            	    cnt6++;
            	} while (true);

            	loop6:
            		;	// Stops C# compiler whining that label 'loop6' has no statements

            	// G3D.g:116:32: ( IntegerTypeSuffix )?
            	int alt7 = 2;
            	int LA7_0 = input.LA(1);

            	if ( (LA7_0 == 'L' || LA7_0 == 'l') )
            	{
            	    alt7 = 1;
            	}
            	switch (alt7) 
            	{
            	    case 1 :
            	        // G3D.g:116:32: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "OctalLiteral"

    // $ANTLR start "HexDigit"
    public void mHexDigit() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:119:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
            // G3D.g:119:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
            {
            	if ( (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'F') || (input.LA(1) >= 'a' && input.LA(1) <= 'f') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "HexDigit"

    // $ANTLR start "IntegerTypeSuffix"
    public void mIntegerTypeSuffix() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:122:19: ( ( 'l' | 'L' ) )
            // G3D.g:122:21: ( 'l' | 'L' )
            {
            	if ( input.LA(1) == 'L' || input.LA(1) == 'l' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "IntegerTypeSuffix"

    // $ANTLR start "FloatingPointLiteral"
    public void mFloatingPointLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = FloatingPointLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:125:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( FloatTypeSuffix )? )
            int alt15 = 3;
            alt15 = dfa15.Predict(input);
            switch (alt15) 
            {
                case 1 :
                    // G3D.g:125:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )?
                    {
                    	// G3D.g:125:9: ( '0' .. '9' )+
                    	int cnt8 = 0;
                    	do 
                    	{
                    	    int alt8 = 2;
                    	    int LA8_0 = input.LA(1);

                    	    if ( ((LA8_0 >= '0' && LA8_0 <= '9')) )
                    	    {
                    	        alt8 = 1;
                    	    }


                    	    switch (alt8) 
                    		{
                    			case 1 :
                    			    // G3D.g:125:10: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt8 >= 1 ) goto loop8;
                    		            EarlyExitException eee8 =
                    		                new EarlyExitException(8, input);
                    		            throw eee8;
                    	    }
                    	    cnt8++;
                    	} while (true);

                    	loop8:
                    		;	// Stops C# compiler whining that label 'loop8' has no statements

                    	Match('.'); 
                    	// G3D.g:125:25: ( '0' .. '9' )*
                    	do 
                    	{
                    	    int alt9 = 2;
                    	    int LA9_0 = input.LA(1);

                    	    if ( ((LA9_0 >= '0' && LA9_0 <= '9')) )
                    	    {
                    	        alt9 = 1;
                    	    }


                    	    switch (alt9) 
                    		{
                    			case 1 :
                    			    // G3D.g:125:26: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    goto loop9;
                    	    }
                    	} while (true);

                    	loop9:
                    		;	// Stops C# compiler whining that label 'loop9' has no statements

                    	// G3D.g:125:37: ( FloatTypeSuffix )?
                    	int alt10 = 2;
                    	int LA10_0 = input.LA(1);

                    	if ( (LA10_0 == 'D' || LA10_0 == 'F' || LA10_0 == 'd' || LA10_0 == 'f') )
                    	{
                    	    alt10 = 1;
                    	}
                    	switch (alt10) 
                    	{
                    	    case 1 :
                    	        // G3D.g:125:37: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 2 :
                    // G3D.g:126:9: '.' ( '0' .. '9' )+ ( FloatTypeSuffix )?
                    {
                    	Match('.'); 
                    	// G3D.g:126:13: ( '0' .. '9' )+
                    	int cnt11 = 0;
                    	do 
                    	{
                    	    int alt11 = 2;
                    	    int LA11_0 = input.LA(1);

                    	    if ( ((LA11_0 >= '0' && LA11_0 <= '9')) )
                    	    {
                    	        alt11 = 1;
                    	    }


                    	    switch (alt11) 
                    		{
                    			case 1 :
                    			    // G3D.g:126:14: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt11 >= 1 ) goto loop11;
                    		            EarlyExitException eee11 =
                    		                new EarlyExitException(11, input);
                    		            throw eee11;
                    	    }
                    	    cnt11++;
                    	} while (true);

                    	loop11:
                    		;	// Stops C# compiler whining that label 'loop11' has no statements

                    	// G3D.g:126:25: ( FloatTypeSuffix )?
                    	int alt12 = 2;
                    	int LA12_0 = input.LA(1);

                    	if ( (LA12_0 == 'D' || LA12_0 == 'F' || LA12_0 == 'd' || LA12_0 == 'f') )
                    	{
                    	    alt12 = 1;
                    	}
                    	switch (alt12) 
                    	{
                    	    case 1 :
                    	        // G3D.g:126:25: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 3 :
                    // G3D.g:127:9: ( '0' .. '9' )+ ( FloatTypeSuffix )?
                    {
                    	// G3D.g:127:9: ( '0' .. '9' )+
                    	int cnt13 = 0;
                    	do 
                    	{
                    	    int alt13 = 2;
                    	    int LA13_0 = input.LA(1);

                    	    if ( ((LA13_0 >= '0' && LA13_0 <= '9')) )
                    	    {
                    	        alt13 = 1;
                    	    }


                    	    switch (alt13) 
                    		{
                    			case 1 :
                    			    // G3D.g:127:10: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt13 >= 1 ) goto loop13;
                    		            EarlyExitException eee13 =
                    		                new EarlyExitException(13, input);
                    		            throw eee13;
                    	    }
                    	    cnt13++;
                    	} while (true);

                    	loop13:
                    		;	// Stops C# compiler whining that label 'loop13' has no statements

                    	// G3D.g:127:21: ( FloatTypeSuffix )?
                    	int alt14 = 2;
                    	int LA14_0 = input.LA(1);

                    	if ( (LA14_0 == 'D' || LA14_0 == 'F' || LA14_0 == 'd' || LA14_0 == 'f') )
                    	{
                    	    alt14 = 1;
                    	}
                    	switch (alt14) 
                    	{
                    	    case 1 :
                    	        // G3D.g:127:21: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;

            }
            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "FloatingPointLiteral"

    // $ANTLR start "FloatTypeSuffix"
    public void mFloatTypeSuffix() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:131:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
            // G3D.g:131:19: ( 'f' | 'F' | 'd' | 'D' )
            {
            	if ( input.LA(1) == 'D' || input.LA(1) == 'F' || input.LA(1) == 'd' || input.LA(1) == 'f' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "FloatTypeSuffix"

    // $ANTLR start "CharacterLiteral"
    public void mCharacterLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = CharacterLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:134:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
            // G3D.g:134:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
            {
            	Match('\''); 
            	// G3D.g:134:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
            	int alt16 = 2;
            	int LA16_0 = input.LA(1);

            	if ( (LA16_0 == '\\') )
            	{
            	    alt16 = 1;
            	}
            	else if ( ((LA16_0 >= '\u0000' && LA16_0 <= '&') || (LA16_0 >= '(' && LA16_0 <= '[') || (LA16_0 >= ']' && LA16_0 <= '\uFFFF')) )
            	{
            	    alt16 = 2;
            	}
            	else 
            	{
            	    NoViableAltException nvae_d16s0 =
            	        new NoViableAltException("", 16, 0, input);

            	    throw nvae_d16s0;
            	}
            	switch (alt16) 
            	{
            	    case 1 :
            	        // G3D.g:134:16: EscapeSequence
            	        {
            	        	mEscapeSequence(); 

            	        }
            	        break;
            	    case 2 :
            	        // G3D.g:134:33: ~ ( '\\'' | '\\\\' )
            	        {
            	        	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&') || (input.LA(1) >= '(' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) 
            	        	{
            	        	    input.Consume();

            	        	}
            	        	else 
            	        	{
            	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	        	    Recover(mse);
            	        	    throw mse;}


            	        }
            	        break;

            	}

            	Match('\''); 
            	 Text = Text.Substring(1, Text.Length - 2); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "CharacterLiteral"

    // $ANTLR start "StringLiteral"
    public void mStringLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = StringLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:139:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
            // G3D.g:139:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
            {
            	Match('\"'); 
            	// G3D.g:139:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
            	do 
            	{
            	    int alt17 = 3;
            	    int LA17_0 = input.LA(1);

            	    if ( (LA17_0 == '\\') )
            	    {
            	        alt17 = 1;
            	    }
            	    else if ( ((LA17_0 >= '\u0000' && LA17_0 <= '!') || (LA17_0 >= '#' && LA17_0 <= '[') || (LA17_0 >= ']' && LA17_0 <= '\uFFFF')) )
            	    {
            	        alt17 = 2;
            	    }


            	    switch (alt17) 
            		{
            			case 1 :
            			    // G3D.g:139:14: EscapeSequence
            			    {
            			    	mEscapeSequence(); 

            			    }
            			    break;
            			case 2 :
            			    // G3D.g:139:31: ~ ( '\\\\' | '\"' )
            			    {
            			    	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!') || (input.LA(1) >= '#' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop17;
            	    }
            	} while (true);

            	loop17:
            		;	// Stops C# compiler whining that label 'loop17' has no statements

            	Match('\"'); 
            	 Text = Text.Substring(1, Text.Length - 2); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "StringLiteral"

    // $ANTLR start "EscapeSequence"
    public void mEscapeSequence() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:145:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
            int alt18 = 3;
            int LA18_0 = input.LA(1);

            if ( (LA18_0 == '\\') )
            {
                switch ( input.LA(2) ) 
                {
                case '\"':
                case '\'':
                case '\\':
                case 'b':
                case 'f':
                case 'n':
                case 'r':
                case 't':
                	{
                    alt18 = 1;
                    }
                    break;
                case 'u':
                	{
                    alt18 = 2;
                    }
                    break;
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                	{
                    alt18 = 3;
                    }
                    break;
                	default:
                	    NoViableAltException nvae_d18s1 =
                	        new NoViableAltException("", 18, 1, input);

                	    throw nvae_d18s1;
                }

            }
            else 
            {
                NoViableAltException nvae_d18s0 =
                    new NoViableAltException("", 18, 0, input);

                throw nvae_d18s0;
            }
            switch (alt18) 
            {
                case 1 :
                    // G3D.g:145:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                    {
                    	Match('\\'); 
                    	if ( input.LA(1) == '\"' || input.LA(1) == '\'' || input.LA(1) == '\\' || input.LA(1) == 'b' || input.LA(1) == 'f' || input.LA(1) == 'n' || input.LA(1) == 'r' || input.LA(1) == 't' ) 
                    	{
                    	    input.Consume();

                    	}
                    	else 
                    	{
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	    Recover(mse);
                    	    throw mse;}


                    }
                    break;
                case 2 :
                    // G3D.g:146:9: UnicodeEscape
                    {
                    	mUnicodeEscape(); 

                    }
                    break;
                case 3 :
                    // G3D.g:147:9: OctalEscape
                    {
                    	mOctalEscape(); 

                    }
                    break;

            }
        }
        finally 
    	{
        }
    }
    // $ANTLR end "EscapeSequence"

    // $ANTLR start "OctalEscape"
    public void mOctalEscape() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:152:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
            int alt19 = 3;
            int LA19_0 = input.LA(1);

            if ( (LA19_0 == '\\') )
            {
                int LA19_1 = input.LA(2);

                if ( ((LA19_1 >= '0' && LA19_1 <= '3')) )
                {
                    int LA19_2 = input.LA(3);

                    if ( ((LA19_2 >= '0' && LA19_2 <= '7')) )
                    {
                        int LA19_4 = input.LA(4);

                        if ( ((LA19_4 >= '0' && LA19_4 <= '7')) )
                        {
                            alt19 = 1;
                        }
                        else 
                        {
                            alt19 = 2;}
                    }
                    else 
                    {
                        alt19 = 3;}
                }
                else if ( ((LA19_1 >= '4' && LA19_1 <= '7')) )
                {
                    int LA19_3 = input.LA(3);

                    if ( ((LA19_3 >= '0' && LA19_3 <= '7')) )
                    {
                        alt19 = 2;
                    }
                    else 
                    {
                        alt19 = 3;}
                }
                else 
                {
                    NoViableAltException nvae_d19s1 =
                        new NoViableAltException("", 19, 1, input);

                    throw nvae_d19s1;
                }
            }
            else 
            {
                NoViableAltException nvae_d19s0 =
                    new NoViableAltException("", 19, 0, input);

                throw nvae_d19s0;
            }
            switch (alt19) 
            {
                case 1 :
                    // G3D.g:152:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:152:14: ( '0' .. '3' )
                    	// G3D.g:152:15: '0' .. '3'
                    	{
                    		MatchRange('0','3'); 

                    	}

                    	// G3D.g:152:25: ( '0' .. '7' )
                    	// G3D.g:152:26: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}

                    	// G3D.g:152:36: ( '0' .. '7' )
                    	// G3D.g:152:37: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;
                case 2 :
                    // G3D.g:153:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:153:14: ( '0' .. '7' )
                    	// G3D.g:153:15: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}

                    	// G3D.g:153:25: ( '0' .. '7' )
                    	// G3D.g:153:26: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;
                case 3 :
                    // G3D.g:154:9: '\\\\' ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:154:14: ( '0' .. '7' )
                    	// G3D.g:154:15: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;

            }
        }
        finally 
    	{
        }
    }
    // $ANTLR end "OctalEscape"

    // $ANTLR start "UnicodeEscape"
    public void mUnicodeEscape() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:159:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
            // G3D.g:159:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
            {
            	Match('\\'); 
            	Match('u'); 
            	mHexDigit(); 
            	mHexDigit(); 
            	mHexDigit(); 
            	mHexDigit(); 

            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "UnicodeEscape"

    // $ANTLR start "ID"
    public void mID() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = ID;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:163:5: ( Letter ( Letter | Digit )* )
            // G3D.g:163:9: Letter ( Letter | Digit )*
            {
            	mLetter(); 
            	// G3D.g:163:16: ( Letter | Digit )*
            	do 
            	{
            	    int alt20 = 2;
            	    int LA20_0 = input.LA(1);

            	    if ( (LA20_0 == '$' || (LA20_0 >= '0' && LA20_0 <= '9') || (LA20_0 >= 'A' && LA20_0 <= 'Z') || LA20_0 == '_' || (LA20_0 >= 'a' && LA20_0 <= 'z') || (LA20_0 >= '\u00C0' && LA20_0 <= '\u00D6') || (LA20_0 >= '\u00D8' && LA20_0 <= '\u00F6') || (LA20_0 >= '\u00F8' && LA20_0 <= '\u1FFF') || (LA20_0 >= '\u3040' && LA20_0 <= '\u318F') || (LA20_0 >= '\u3300' && LA20_0 <= '\u337F') || (LA20_0 >= '\u3400' && LA20_0 <= '\u3D2D') || (LA20_0 >= '\u4E00' && LA20_0 <= '\u9FFF') || (LA20_0 >= '\uF900' && LA20_0 <= '\uFAFF')) )
            	    {
            	        alt20 = 1;
            	    }


            	    switch (alt20) 
            		{
            			case 1 :
            			    // G3D.g:
            			    {
            			    	if ( input.LA(1) == '$' || (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || (input.LA(1) >= '\u00F8' && input.LA(1) <= '\u1FFF') || (input.LA(1) >= '\u3040' && input.LA(1) <= '\u318F') || (input.LA(1) >= '\u3300' && input.LA(1) <= '\u337F') || (input.LA(1) >= '\u3400' && input.LA(1) <= '\u3D2D') || (input.LA(1) >= '\u4E00' && input.LA(1) <= '\u9FFF') || (input.LA(1) >= '\uF900' && input.LA(1) <= '\uFAFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop20;
            	    }
            	} while (true);

            	loop20:
            		;	// Stops C# compiler whining that label 'loop20' has no statements


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "ID"

    // $ANTLR start "Letter"
    public void mLetter() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:168:5: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' )
            // G3D.g:
            {
            	if ( input.LA(1) == '$' || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || (input.LA(1) >= '\u00F8' && input.LA(1) <= '\u1FFF') || (input.LA(1) >= '\u3040' && input.LA(1) <= '\u318F') || (input.LA(1) >= '\u3300' && input.LA(1) <= '\u337F') || (input.LA(1) >= '\u3400' && input.LA(1) <= '\u3D2D') || (input.LA(1) >= '\u4E00' && input.LA(1) <= '\u9FFF') || (input.LA(1) >= '\uF900' && input.LA(1) <= '\uFAFF') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Letter"

    // $ANTLR start "Digit"
    public void mDigit() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:185:5: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' )
            // G3D.g:
            {
            	if ( (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= '\u0660' && input.LA(1) <= '\u0669') || (input.LA(1) >= '\u06F0' && input.LA(1) <= '\u06F9') || (input.LA(1) >= '\u0966' && input.LA(1) <= '\u096F') || (input.LA(1) >= '\u09E6' && input.LA(1) <= '\u09EF') || (input.LA(1) >= '\u0A66' && input.LA(1) <= '\u0A6F') || (input.LA(1) >= '\u0AE6' && input.LA(1) <= '\u0AEF') || (input.LA(1) >= '\u0B66' && input.LA(1) <= '\u0B6F') || (input.LA(1) >= '\u0BE7' && input.LA(1) <= '\u0BEF') || (input.LA(1) >= '\u0C66' && input.LA(1) <= '\u0C6F') || (input.LA(1) >= '\u0CE6' && input.LA(1) <= '\u0CEF') || (input.LA(1) >= '\u0D66' && input.LA(1) <= '\u0D6F') || (input.LA(1) >= '\u0E50' && input.LA(1) <= '\u0E59') || (input.LA(1) >= '\u0ED0' && input.LA(1) <= '\u0ED9') || (input.LA(1) >= '\u1040' && input.LA(1) <= '\u1049') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Digit"

    // $ANTLR start "WS"
    public void mWS() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = WS;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:202:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
            // G3D.g:202:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
            {
            	if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n') || (input.LA(1) >= '\f' && input.LA(1) <= '\r') || input.LA(1) == ' ' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}

            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "WS"

    // $ANTLR start "COMMENT"
    public void mCOMMENT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = COMMENT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:206:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
            // G3D.g:206:9: '/*' ( options {greedy=false; } : . )* '*/'
            {
            	Match("/*"); 

            	// G3D.g:206:14: ( options {greedy=false; } : . )*
            	do 
            	{
            	    int alt21 = 2;
            	    int LA21_0 = input.LA(1);

            	    if ( (LA21_0 == '*') )
            	    {
            	        int LA21_1 = input.LA(2);

            	        if ( (LA21_1 == '/') )
            	        {
            	            alt21 = 2;
            	        }
            	        else if ( ((LA21_1 >= '\u0000' && LA21_1 <= '.') || (LA21_1 >= '0' && LA21_1 <= '\uFFFF')) )
            	        {
            	            alt21 = 1;
            	        }


            	    }
            	    else if ( ((LA21_0 >= '\u0000' && LA21_0 <= ')') || (LA21_0 >= '+' && LA21_0 <= '\uFFFF')) )
            	    {
            	        alt21 = 1;
            	    }


            	    switch (alt21) 
            		{
            			case 1 :
            			    // G3D.g:206:42: .
            			    {
            			    	MatchAny(); 

            			    }
            			    break;

            			default:
            			    goto loop21;
            	    }
            	} while (true);

            	loop21:
            		;	// Stops C# compiler whining that label 'loop21' has no statements

            	Match("*/"); 

            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "COMMENT"

    // $ANTLR start "LINE_COMMENT"
    public void mLINE_COMMENT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = LINE_COMMENT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:210:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
            // G3D.g:210:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
            {
            	Match("//"); 

            	// G3D.g:210:12: (~ ( '\\n' | '\\r' ) )*
            	do 
            	{
            	    int alt22 = 2;
            	    int LA22_0 = input.LA(1);

            	    if ( ((LA22_0 >= '\u0000' && LA22_0 <= '\t') || (LA22_0 >= '\u000B' && LA22_0 <= '\f') || (LA22_0 >= '\u000E' && LA22_0 <= '\uFFFF')) )
            	    {
            	        alt22 = 1;
            	    }


            	    switch (alt22) 
            		{
            			case 1 :
            			    // G3D.g:210:12: ~ ( '\\n' | '\\r' )
            			    {
            			    	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '\t') || (input.LA(1) >= '\u000B' && input.LA(1) <= '\f') || (input.LA(1) >= '\u000E' && input.LA(1) <= '\uFFFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop22;
            	    }
            	} while (true);

            	loop22:
            		;	// Stops C# compiler whining that label 'loop22' has no statements

            	// G3D.g:210:26: ( '\\r' )?
            	int alt23 = 2;
            	int LA23_0 = input.LA(1);

            	if ( (LA23_0 == '\r') )
            	{
            	    alt23 = 1;
            	}
            	switch (alt23) 
            	{
            	    case 1 :
            	        // G3D.g:210:26: '\\r'
            	        {
            	        	Match('\r'); 

            	        }
            	        break;

            	}

            	Match('\n'); 
            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "LINE_COMMENT"

    override public void mTokens() // throws RecognitionException 
    {
        // G3D.g:1:8: ( T__51 | T__52 | T__53 | POINT | LINE | VECTOR | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ID | WS | COMMENT | LINE_COMMENT )
        int alt24 = 16;
        alt24 = dfa24.Predict(input);
        switch (alt24) 
        {
            case 1 :
                // G3D.g:1:10: T__51
                {
                	mT__51(); 

                }
                break;
            case 2 :
                // G3D.g:1:16: T__52
                {
                	mT__52(); 

                }
                break;
            case 3 :
                // G3D.g:1:22: T__53
                {
                	mT__53(); 

                }
                break;
            case 4 :
                // G3D.g:1:28: POINT
                {
                	mPOINT(); 

                }
                break;
            case 5 :
                // G3D.g:1:34: LINE
                {
                	mLINE(); 

                }
                break;
            case 6 :
                // G3D.g:1:39: VECTOR
                {
                	mVECTOR(); 

                }
                break;
            case 7 :
                // G3D.g:1:46: HexLiteral
                {
                	mHexLiteral(); 

                }
                break;
            case 8 :
                // G3D.g:1:57: DecimalLiteral
                {
                	mDecimalLiteral(); 

                }
                break;
            case 9 :
                // G3D.g:1:72: OctalLiteral
                {
                	mOctalLiteral(); 

                }
                break;
            case 10 :
                // G3D.g:1:85: FloatingPointLiteral
                {
                	mFloatingPointLiteral(); 

                }
                break;
            case 11 :
                // G3D.g:1:106: CharacterLiteral
                {
                	mCharacterLiteral(); 

                }
                break;
            case 12 :
                // G3D.g:1:123: StringLiteral
                {
                	mStringLiteral(); 

                }
                break;
            case 13 :
                // G3D.g:1:137: ID
                {
                	mID(); 

                }
                break;
            case 14 :
                // G3D.g:1:140: WS
                {
                	mWS(); 

                }
                break;
            case 15 :
                // G3D.g:1:143: COMMENT
                {
                	mCOMMENT(); 

                }
                break;
            case 16 :
                // G3D.g:1:151: LINE_COMMENT
                {
                	mLINE_COMMENT(); 

                }
                break;

        }

    }


    protected DFA15 dfa15;
    protected DFA24 dfa24;
	private void InitializeCyclicDFAs()
	{
	    this.dfa15 = new DFA15(this);
	    this.dfa24 = new DFA24(this);


	}

    const string DFA15_eotS =
        "\x01\uffff\x01\x03\x03\uffff";
    const string DFA15_eofS =
        "\x05\uffff";
    const string DFA15_minS =
        "\x02\x2e\x03\uffff";
    const string DFA15_maxS =
        "\x02\x39\x03\uffff";
    const string DFA15_acceptS =
        "\x02\uffff\x01\x02\x01\x03\x01\x01";
    const string DFA15_specialS =
        "\x05\uffff}>";
    static readonly string[] DFA15_transitionS = {
            "\x01\x02\x01\uffff\x0a\x01",
            "\x01\x04\x01\uffff\x0a\x01",
            "",
            "",
            ""
    };

    static readonly short[] DFA15_eot = DFA.UnpackEncodedString(DFA15_eotS);
    static readonly short[] DFA15_eof = DFA.UnpackEncodedString(DFA15_eofS);
    static readonly char[] DFA15_min = DFA.UnpackEncodedStringToUnsignedChars(DFA15_minS);
    static readonly char[] DFA15_max = DFA.UnpackEncodedStringToUnsignedChars(DFA15_maxS);
    static readonly short[] DFA15_accept = DFA.UnpackEncodedString(DFA15_acceptS);
    static readonly short[] DFA15_special = DFA.UnpackEncodedString(DFA15_specialS);
    static readonly short[][] DFA15_transition = DFA.UnpackEncodedStringArray(DFA15_transitionS);

    protected class DFA15 : DFA
    {
        public DFA15(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 15;
            this.eot = DFA15_eot;
            this.eof = DFA15_eof;
            this.min = DFA15_min;
            this.max = DFA15_max;
            this.accept = DFA15_accept;
            this.special = DFA15_special;
            this.transition = DFA15_transition;

        }

        override public string Description
        {
            get { return "124:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( FloatTypeSuffix )? );"; }
        }

    }

    const string DFA24_eotS =
        "\x04\uffff\x03\x0c\x02\x13\x06\uffff\x03\x0c\x02\uffff\x01\x1b"+
        "\x01\x13\x02\uffff\x03\x0c\x01\uffff\x01\x0c\x01\x20\x01\x0c\x01"+
        "\x22\x01\uffff\x01\x0c\x01\uffff\x01\x24\x01\uffff";
    const string DFA24_eofS =
        "\x25\uffff";
    const string DFA24_minS =
        "\x01\x09\x03\uffff\x01\x4f\x01\x49\x01\x45\x02\x2e\x05\uffff\x01"+
        "\x2a\x01\x49\x01\x4e\x01\x43\x02\uffff\x02\x2e\x02\uffff\x01\x4e"+
        "\x01\x45\x01\x54\x01\uffff\x01\x54\x01\x24\x01\x4f\x01\x24\x01\uffff"+
        "\x01\x52\x01\uffff\x01\x24\x01\uffff";
    const string DFA24_maxS =
        "\x01\ufaff\x03\uffff\x01\x6f\x01\x69\x01\x65\x01\x78\x01\x66\x05"+
        "\uffff\x01\x2f\x01\x69\x01\x6e\x01\x63\x02\uffff\x02\x66\x02\uffff"+
        "\x01\x6e\x01\x65\x01\x74\x01\uffff\x01\x74\x01\ufaff\x01\x6f\x01"+
        "\ufaff\x01\uffff\x01\x72\x01\uffff\x01\ufaff\x01\uffff";
    const string DFA24_acceptS =
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x05\uffff\x01\x0a\x01\x0b\x01"+
        "\x0c\x01\x0d\x01\x0e\x04\uffff\x01\x07\x01\x08\x02\uffff\x01\x0f"+
        "\x01\x10\x03\uffff\x01\x09\x04\uffff\x01\x05\x01\uffff\x01\x04\x01"+
        "\uffff\x01\x06";
    const string DFA24_specialS =
        "\x25\uffff}>";
    static readonly string[] DFA24_transitionS = {
            "\x02\x0d\x01\uffff\x02\x0d\x12\uffff\x01\x0d\x01\uffff\x01"+
            "\x0b\x01\uffff\x01\x0c\x02\uffff\x01\x0a\x03\uffff\x01\x02\x01"+
            "\uffff\x01\x03\x01\x09\x01\x0e\x01\x07\x09\x08\x03\uffff\x01"+
            "\x01\x03\uffff\x0b\x0c\x01\x05\x03\x0c\x01\x04\x05\x0c\x01\x06"+
            "\x04\x0c\x04\uffff\x01\x0c\x01\uffff\x0b\x0c\x01\x05\x03\x0c"+
            "\x01\x04\x05\x0c\x01\x06\x04\x0c\x45\uffff\x17\x0c\x01\uffff"+
            "\x1f\x0c\x01\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff"+
            "\u0080\x0c\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900"+
            "\uffff\u0200\x0c",
            "",
            "",
            "",
            "\x01\x0f\x1f\uffff\x01\x0f",
            "\x01\x10\x1f\uffff\x01\x10",
            "\x01\x11\x1f\uffff\x01\x11",
            "\x01\x09\x01\uffff\x08\x14\x02\x09\x0a\uffff\x01\x09\x01\uffff"+
            "\x01\x09\x11\uffff\x01\x12\x0b\uffff\x01\x09\x01\uffff\x01\x09"+
            "\x11\uffff\x01\x12",
            "\x01\x09\x01\uffff\x0a\x15\x0a\uffff\x01\x09\x01\uffff\x01"+
            "\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "",
            "",
            "",
            "",
            "",
            "\x01\x16\x04\uffff\x01\x17",
            "\x01\x18\x1f\uffff\x01\x18",
            "\x01\x19\x1f\uffff\x01\x19",
            "\x01\x1a\x1f\uffff\x01\x1a",
            "",
            "",
            "\x01\x09\x01\uffff\x08\x14\x02\x09\x0a\uffff\x01\x09\x01\uffff"+
            "\x01\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "\x01\x09\x01\uffff\x0a\x15\x0a\uffff\x01\x09\x01\uffff\x01"+
            "\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "",
            "",
            "\x01\x1c\x1f\uffff\x01\x1c",
            "\x01\x1d\x1f\uffff\x01\x1d",
            "\x01\x1e\x1f\uffff\x01\x1e",
            "",
            "\x01\x1f\x1f\uffff\x01\x1f",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            "\x01\x21\x1f\uffff\x01\x21",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            "",
            "\x01\x23\x1f\uffff\x01\x23",
            "",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            ""
    };

    static readonly short[] DFA24_eot = DFA.UnpackEncodedString(DFA24_eotS);
    static readonly short[] DFA24_eof = DFA.UnpackEncodedString(DFA24_eofS);
    static readonly char[] DFA24_min = DFA.UnpackEncodedStringToUnsignedChars(DFA24_minS);
    static readonly char[] DFA24_max = DFA.UnpackEncodedStringToUnsignedChars(DFA24_maxS);
    static readonly short[] DFA24_accept = DFA.UnpackEncodedString(DFA24_acceptS);
    static readonly short[] DFA24_special = DFA.UnpackEncodedString(DFA24_specialS);
    static readonly short[][] DFA24_transition = DFA.UnpackEncodedStringArray(DFA24_transitionS);

    protected class DFA24 : DFA
    {
        public DFA24(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 24;
            this.eot = DFA24_eot;
            this.eof = DFA24_eof;
            this.min = DFA24_min;
            this.max = DFA24_max;
            this.accept = DFA24_accept;
            this.special = DFA24_special;
            this.transition = DFA24_transition;

        }

        override public string Description
        {
            get { return "1:1: Tokens : ( T__51 | T__52 | T__53 | POINT | LINE | VECTOR | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ID | WS | COMMENT | LINE_COMMENT );"; }
        }

    }

 
    
}
}